package cn.wlinker.video.monitor.service;

import cn.hutool.json.JSONObject;
import cn.wlinker.video.monitor.domain.Page;
import cn.wlinker.video.monitor.domain.PageQuery;
import cn.wlinker.video.monitor.domain.dto.MonitorDeviceDTO;
import cn.wlinker.video.monitor.domain.dto.PlayUrlDTO;
import cn.wlinker.video.monitor.domain.vo.FirstLevelDeviceVO;
import cn.wlinker.video.monitor.domain.vo.MonitorDeviceVO;
import cn.wlinker.video.monitor.domain.vo.PictureUrlVO;
import cn.wlinker.video.monitor.domain.vo.VideoVO;

import java.util.List;

/**
 * 具体的构建流的接口
 *
 * @author gxsjx
 * @version 1.0
 * @date 2022/7/26
 */
public interface IVideoStreamService extends IPtzControlService {

    /**
     * 获取回放流
     * @param dto
     * @param playUrlDTO
     * @return
     */
    default VideoVO getRelayUrl(MonitorDeviceDTO dto, PlayUrlDTO playUrlDTO){
        throw new UnsupportedOperationException("不支持相关操作");
    }

    /**
     * 构建视频流
     *
     * @param dto 设备属性
     * @return
     */
    VideoVO buildVideoStream(MonitorDeviceDTO dto, PlayUrlDTO playUrlDTO);

    /**
     * 获取摄像头列表
     *
     * @return
     */
    default Page<MonitorDeviceVO> getMonitorDeviceList(String deviceCode, String status,PageQuery pageQuery) {
        throw new UnsupportedOperationException("不支持相关操作");
    }

    /**
     * 图片抓拍
     * @param dto
     * @param quality 视频清晰度,0-流畅,1-高清(720P),2-FCIF,3-1080P,4-400w
     * @return
     */
    PictureUrlVO capture(MonitorDeviceDTO dto,Integer quality);

    /**
     * 根据设备序列号查询设备能力集
     * @param dto
     * @return
     */
    default JSONObject capacity(MonitorDeviceDTO dto){
        throw new UnsupportedOperationException("不支持相关操作");
    }

    /**
     * 获取一级设备列表
     *
     * @return
     */
    default List<FirstLevelDeviceVO> getFirstLevelDeviceList(){
        throw new UnsupportedOperationException("不支持相关操作");
    }

}
